连杆有向包围盒(OBB)开发介绍
| 修订日期 | 修订版 | 修订内容 | 修订人 | 
|---|---|---|---|
| 2023.7.20 | v0.1 | 初始化文档 | 舒瑞 | 
1 功能描述
包围盒:OBB包围盒是一个可以根据物体方向和姿态进行旋转的三维边界框,用于完全包围一个三维物体或物体集合,在机械臂自碰撞检测与路径规划中发挥重要作用.
定义:OBB包围盒由三个相互垂直的轴(通常是物体的局部坐标轴),一个中心点和三个方向长度定义.
解决问题:
给定机械臂STL描述文件和各关节角度
- 输出OBB包围盒在局部坐标系下的中心位置,姿态,以及半长、半宽、半高.
 - 输出OBB包围盒在基座标系下的中心位置,姿态,以及半长、半宽、半高.
 
2 接口介绍
/**
     * @brief 获得连杆的OBB信息
     * @param link_name: 连杆名
     * @return 连杆的OBB模型
     */
    ARAL_API_COMMON(1.0) OBBPairs mdlGetLinkOBBModel(const std::string& link_name)const = 0;
用户可以动态调用该接口, 通过给定连杆名称,获取连杆OBB模型在局部坐标系下的描述.
/**
     * @brief 获得某个构型下的所有连杆OBB模型
     * @param q_in: 机器人构型参数(关节角)
     * @param real_fk: 基于理论 (false) / 实际 DH(true) 参数
     * @return 所有连杆的OBB模型在基坐标系下的描述
     */
    ARAL_API_COMMON(1.0) std::vector<OBBPairs> mdlGetLinkOBBModels(const interface::RLJntArray& q_in, const bool real_fk)const = 0;
用户可以动态调用该接口, 通过给定机械臂关节角度,DH参数,获取连杆OBB模型在基座标系下的描述.
3 开发历程
//机械臂型号配置
Setup("aubo_i5");
interface::RLJntArray linkmass_ref {5.05, 11.28, 2.88, 1.62, 1.62, 0.5}; //初始化关节角
//获取连杆OBB模型
auto names = robot->mdlGetLinkName();
for(auto name : names)
    robot->mdlGetLinkOBBModel(name);
//获取OBB模型在基座标系下的描述
auto res = robot->mdlGetLinkOBBModels(linkmass_ref, true);
CHECK(res.size() == names.size()-2);
4 包围效果
对aubo-i5机械臂各连杆进行OBB包围操作,包围效果可视化如图1所示.
